// 基本流程一样有些加个类型即可
// 函数式编程 别人的库 不用加类型
import { LOGIN_TOKEN } from '@/global/constants'
import { localCache } from '@/utils/cache'
import { firstMenu } from '@/utils/map-menus'
import { createRouter, createWebHashHistory } from 'vue-router'
const router = createRouter({
  history: createWebHashHistory(),
  // 映射关系 路径 -组件
  routes: [
    {
      path: '/',
      redirect: '/main'
    },
    {
      path: '/login',
      component: () => import('../views/login/Login.vue')
    },
    {
      path: '/main',
      name: 'main',
      component: () => import('../views/main/Main.vue')
      // 全部在这注册 注册所有路由
    },
    // 404
    {
      path: '/:pathMatch(.*)',
      component: () => import('../views/not-found/NotFound.vue')
    }
  ]
})
// 1全部路由 想写在单独的文件-后续写自动化（不想写也ok）
// const localRoutes = [
//   {
//     path: '/main/analysis/overview',
//     component: () => import('../views/main/analysis/overview/overview.vue')
//   },
//   {
//     path: '/main/analysis/dashboard',
//     component: () => import('../views/main/analysis/dashboard/dashboard.vue')
//   },
//   {
//     path: '/main/system/user',
//     component: () => import('../views/main/system/user/user.vue')
//   },
//   {
//     path: '/main/system/role',
//     component: () => import('../views/main/system/role/role.vue')
//   }
// ]
// // 2 动态添加路由
// // 根据
// // router.addRoute() 默认是添加一级路由
// router.addRoute('main', localRoutes[0])
// router.addRoute('main', localRoutes[1])
// 导航守卫
router.beforeEach((to) => {
  // 返回值 决定导航的路径  不返回默认跳转
  // 首页需要token才可跳转
  const token = localCache.getCache(LOGIN_TOKEN)
  // 想跳转主页并且没有token
  // if (to.path !== '/login' && !token) {
  if (to.path.startsWith('/main') && !token) {
    return '/login'
  }
  // 如果是进入main
  if (to.path === '/main') {
    return firstMenu?.url
  }
})

export default router
